builder: Simplify parameter collection
authorMatthias Clasen <mclasen@redhat.com>
Tue, 28 Sep 2021 20:59:22 +0000 (16:59 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 Sep 2021 21:48:50 +0000 (17:48 -0400)
This avoids setting the GValue only to toss it at the
end of the loop body. Instead, we can just do nothing
if this property isn't interesting to us.

gtk/gtkbuilder.c

index fef468e8bb2e60c01160da0659ea078700ba387c..ed90fd7b992369e1cdd33196fc00e5ed52e0f4f7 100644 (file)
@@ -539,10 +539,19 @@ gtk_builder_get_parameters (GtkBuilder         *builder,
       PropertyInfo *prop = g_ptr_array_index (properties, i);
       const char *property_name = prop->pspec->name;
       GValue property_value = G_VALUE_INIT;
+      ObjectProperties *params;
 
       if (prop->applied)
         continue;
 
+      if ((prop->pspec->flags & filter_flags) != 0)
+        params = filtered_parameters;
+      else
+        params = parameters;
+
+      if (!params)
+        continue;
+
       if (prop->value)
         {
           g_value_init (&property_value, G_PARAM_SPEC_VALUE_TYPE (prop->pspec));
@@ -616,19 +625,8 @@ gtk_builder_get_parameters (GtkBuilder         *builder,
        * copy it to one of the two arrays, or unset it.
        */
       g_assert (G_IS_VALUE (&property_value));
-
-      if ((prop->pspec->flags & filter_flags) != 0 && filtered_parameters)
-        {
-          object_properties_add (filtered_parameters, property_name, &property_value);
-          prop->applied = TRUE;
-        }
-      else if ((prop->pspec->flags & filter_flags) == 0 && parameters)
-        {
-          object_properties_add (parameters, property_name, &property_value);
-          prop->applied = TRUE;
-        }
-      else
-        g_value_unset (&property_value);
+      object_properties_add (params, property_name, &property_value);
+      prop->applied = TRUE;
     }
 }